$break-small: 600px;

$grid-gap: 1.25em;
$min-product-width: 150px;

@mixin break-small() {
	@media (min-width: #{ ($break-small) }) {
		@content;
	}
}

.wc-block-product-template {
	margin-top: 0;
	margin-bottom: 0;
	max-width: 100%;
	list-style: none;
	padding: 0;

	// Unset background colors that can be inherited from Global Styles with extra specificity.
	&.wc-block-product-template {
		background: none;
	}

	&.is-flex-container {
		flex-direction: row;
		display: flex;
		flex-wrap: wrap;
		gap: 1.25em;

		> li {
			margin: 0;
			width: 100%;
			// Below style is required to override high-specificity Storefront styles
			list-style: none;
		}

		@include break-small {
			@for $i from 2 through 6 {
				&.is-flex-container.columns-#{ $i } > li {
					width: calc((100% / #{ $i }) - 1.25em + (1.25em / #{ $i }));
				}
			}
		}
	}

	&__responsive {
		display: grid;
		grid-gap: $grid-gap;

		@for $i from 2 through 6 {
			$gap-count: calc(#{ $i } - 1);
			$total-gap-width: calc(#{ $gap-count } * #{ $grid-gap });
			$max-product-width: calc((100% - #{ $total-gap-width }) / #{ $i });

			&.columns-#{ $i } {
				grid-template-columns: repeat(auto-fill, minmax(max(#{ $min-product-width }, #{ $max-product-width }), 1fr));
			}
		}

		> li {
			margin-block-start: 0;
		}
	}
}

/**
 * Default spacing between product elements
 */
:where(.wc-block-product-template .wc-block-product) > *:not(:last-child) {
	margin-bottom: 0.75rem;
	margin-top: 0;
}

